package com.template.service;

import com.mybatisflex.core.service.IService;
import com.template.domain.entity.SysMenu;
import com.template.domain.vo.MenuVo;

import java.util.List;

/**
 * 服务层。
 *
 * @author dong
 * @since 2023-09-03
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 获取 并构建菜单tree结构
     */
    List<MenuVo.Tree> getTree();

    /**
     * 获取启用的菜单 并构建菜单tree结构
     */
    List<MenuVo.Tree> getAliveTree();

    /**
     * 级联删除菜单（同时删除子节点）
     */
    void removeCascadeById(Long id);

    /**
     * 获取启用状态的菜单权限列表
     */
    List<String> getAliveMenuPerms();

    /**
     * 获取需要缓存的菜单
     */
    List<String> getKeepaliveMenu();
}
